home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / Tool Chest / Interfaces / UniversalInterfaces 2.0 / PInterfaces / Speech.p < prev    next >
Encoding:
Text File  |  1995-04-18  |  11.2 KB  |  388 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Speech.p
  3.  
  4.      Contains:    Speech Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT Speech;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __SPEECH__}
  30. {$SETC __SPEECH__ := 1}
  31.  
  32. {$I+}
  33. {$SETC SpeechIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$IFC UNDEFINED __TYPES__}
  38. {$I Types.p}
  39. {$ENDC}
  40. {    ConditionalMacros.p                                            }
  41.  
  42. {$IFC UNDEFINED __MEMORY__}
  43. {$I Memory.p}
  44. {$ENDC}
  45. {    MixedMode.p                                                    }
  46.  
  47. {$IFC UNDEFINED __FILES__}
  48. {$I Files.p}
  49. {$ENDC}
  50. {    OSUtils.p                                                    }
  51.  
  52. {$PUSH}
  53. {$ALIGN MAC68K}
  54. {$LibExport+}
  55.  
  56. CONST
  57.     kTextToSpeechSynthType        = 'ttsc';
  58.     kTextToSpeechVoiceType        = 'ttvd';
  59.     kTextToSpeechVoiceFileType    = 'ttvf';
  60.     kTextToSpeechVoiceBundleType = 'ttvb';
  61.  
  62.     kNoEndingProsody            = 1;
  63.     kNoSpeechInterrupt            = 2;
  64.     kPreflightThenPause            = 4;
  65.  
  66.     kImmediate                    = 0;
  67.     kEndOfWord                    = 1;
  68.     kEndOfSentence                = 2;
  69.  
  70. {------------------------------------------}
  71. { GetSpeechInfo & SetSpeechInfo selectors    }
  72. {------------------------------------------}
  73.     soStatus                    = 'stat';
  74.     soErrors                    = 'erro';
  75.     soInputMode                    = 'inpt';
  76.     soCharacterMode                = 'char';
  77.     soNumberMode                = 'nmbr';
  78.     soRate                        = 'rate';
  79.     soPitchBase                    = 'pbas';
  80.     soPitchMod                    = 'pmod';
  81.     soVolume                    = 'volm';
  82.     soSynthType                    = 'vers';
  83.     soRecentSync                = 'sync';
  84.     soPhonemeSymbols            = 'phsy';
  85.     soCurrentVoice                = 'cvox';
  86.     soCommandDelimiter            = 'dlim';
  87.     soReset                        = 'rset';
  88.     soCurrentA5                    = 'myA5';
  89.     soRefCon                    = 'refc';
  90.     soTextDoneCallBack            = 'tdcb';
  91.     soSpeechDoneCallBack        = 'sdcb';
  92.     soSyncCallBack                = 'sycb';
  93.     soErrorCallBack                = 'ercb';
  94.     soPhonemeCallBack            = 'phcb';
  95.     soWordCallBack                = 'wdcb';
  96.     soSynthExtension            = 'xtnd';
  97.     soSoundOutput                = 'sndo';
  98.  
  99. {------------------------------------------}
  100. { Speaking Mode Constants                     }
  101. {------------------------------------------}
  102.     modeText                    = 'TEXT';                        { input mode constants                     }
  103.     modePhonemes                = 'PHON';
  104.     modeNormal                    = 'NORM';                        { character mode and number mode constants }
  105.     modeLiteral                    = 'LTRL';
  106.  
  107.     soVoiceDescription            = 'info';
  108.     soVoiceFile                    = 'fref';
  109.  
  110.  
  111. TYPE
  112.     SpeechChannelRecord = RECORD
  113.         data:                    ARRAY [0..0] OF LONGINT;
  114.     END;
  115.  
  116.     SpeechChannel = ^SpeechChannelRecord;
  117.  
  118.     VoiceSpec = RECORD
  119.         creator:                OSType;
  120.         id:                        OSType;
  121.     END;
  122.  
  123.  
  124. CONST
  125.     kNeuter                        = 0;
  126.     kMale                        = 1;
  127.     kFemale                        = 2;
  128.  
  129.  
  130. TYPE
  131.     VoiceDescription = RECORD
  132.         length:                    LONGINT;
  133.         voice:                    VoiceSpec;
  134.         version:                LONGINT;
  135.         name:                    Str63;
  136.         comment:                Str255;
  137.         gender:                    INTEGER;
  138.         age:                    INTEGER;
  139.         script:                    INTEGER;
  140.         language:                INTEGER;
  141.         region:                    INTEGER;
  142.         reserved:                ARRAY [0..3] OF LONGINT;
  143.     END;
  144.  
  145.     VoiceFileInfo = RECORD
  146.         fileSpec:                FSSpec;
  147.         resID:                    INTEGER;
  148.     END;
  149.  
  150.     SpeechStatusInfo = RECORD
  151.         outputBusy:                BOOLEAN;
  152.         outputPaused:            BOOLEAN;
  153.         inputBytesLeft:            LONGINT;
  154.         phonemeCode:            INTEGER;
  155.     END;
  156.  
  157.     SpeechErrorInfo = RECORD
  158.         count:                    INTEGER;
  159.         oldest:                    OSErr;
  160.         oldPos:                    LONGINT;
  161.         newest:                    OSErr;
  162.         newPos:                    LONGINT;
  163.     END;
  164.  
  165.     SpeechVersionInfo = RECORD
  166.         synthType:                OSType;
  167.         synthSubType:            OSType;
  168.         synthManufacturer:        OSType;
  169.         synthFlags:                LONGINT;
  170.         synthVersion:            NumVersion;
  171.     END;
  172.  
  173.     PhonemeInfo = RECORD
  174.         opcode:                    INTEGER;
  175.         phStr:                    Str15;
  176.         exampleStr:                Str31;
  177.         hiliteStart:            INTEGER;
  178.         hiliteEnd:                INTEGER;
  179.     END;
  180.  
  181.     PhonemeDescriptor = RECORD
  182.         phonemeCount:            INTEGER;
  183.         thePhonemes:            ARRAY [0..0] OF PhonemeInfo;
  184.     END;
  185.  
  186.     SpeechXtndData = PACKED RECORD
  187.         synthCreator:            OSType;
  188.         synthData:                ARRAY [0..1] OF Byte;
  189.     END;
  190.  
  191.     DelimiterInfo = PACKED RECORD
  192.         startDelimiter:            ARRAY [0..1] OF Byte;
  193.         endDelimiter:            ARRAY [0..1] OF Byte;
  194.     END;
  195.  
  196.     SpeechTextDoneProcPtr = ProcPtr;  { PROCEDURE SpeechTextDone(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT); }
  197.     SpeechDoneProcPtr = ProcPtr;  { PROCEDURE SpeechDone(parameter0: SpeechChannel; parameter1: LONGINT); }
  198.     SpeechSyncProcPtr = ProcPtr;  { PROCEDURE SpeechSync(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType); }
  199.     SpeechErrorProcPtr = ProcPtr;  { PROCEDURE SpeechError(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT); }
  200.     SpeechPhonemeProcPtr = ProcPtr;  { PROCEDURE SpeechPhoneme(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER); }
  201.     SpeechWordProcPtr = ProcPtr;  { PROCEDURE SpeechWord(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER); }
  202.     SpeechTextDoneUPP = UniversalProcPtr;
  203.     SpeechDoneUPP = UniversalProcPtr;
  204.     SpeechSyncUPP = UniversalProcPtr;
  205.     SpeechErrorUPP = UniversalProcPtr;
  206.     SpeechPhonemeUPP = UniversalProcPtr;
  207.     SpeechWordUPP = UniversalProcPtr;
  208.  
  209. CONST
  210.     uppSpeechTextDoneProcInfo = $0000FFC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param); }
  211.     uppSpeechDoneProcInfo = $000003C0; { PROCEDURE (4 byte param, 4 byte param); }
  212.     uppSpeechSyncProcInfo = $00000FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param); }
  213.     uppSpeechErrorProcInfo = $00003BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param, 4 byte param); }
  214.     uppSpeechPhonemeProcInfo = $00000BC0; { PROCEDURE (4 byte param, 4 byte param, 2 byte param); }
  215.     uppSpeechWordProcInfo = $00002FC0; { PROCEDURE (4 byte param, 4 byte param, 4 byte param, 2 byte param); }
  216.  
  217. FUNCTION NewSpeechTextDoneProc(userRoutine: SpeechTextDoneProcPtr): SpeechTextDoneUPP;
  218.     {$IFC NOT GENERATINGCFM }
  219.     INLINE $2E9F;
  220.     {$ENDC}
  221.  
  222. FUNCTION NewSpeechDoneProc(userRoutine: SpeechDoneProcPtr): SpeechDoneUPP;
  223.     {$IFC NOT GENERATINGCFM }
  224.     INLINE $2E9F;
  225.     {$ENDC}
  226.  
  227. FUNCTION NewSpeechSyncProc(userRoutine: SpeechSyncProcPtr): SpeechSyncUPP;
  228.     {$IFC NOT GENERATINGCFM }
  229.     INLINE $2E9F;
  230.     {$ENDC}
  231.  
  232. FUNCTION NewSpeechErrorProc(userRoutine: SpeechErrorProcPtr): SpeechErrorUPP;
  233.     {$IFC NOT GENERATINGCFM }
  234.     INLINE $2E9F;
  235.     {$ENDC}
  236.  
  237. FUNCTION NewSpeechPhonemeProc(userRoutine: SpeechPhonemeProcPtr): SpeechPhonemeUPP;
  238.     {$IFC NOT GENERATINGCFM }
  239.     INLINE $2E9F;
  240.     {$ENDC}
  241.  
  242. FUNCTION NewSpeechWordProc(userRoutine: SpeechWordProcPtr): SpeechWordUPP;
  243.     {$IFC NOT GENERATINGCFM }
  244.     INLINE $2E9F;
  245.     {$ENDC}
  246.  
  247. PROCEDURE CallSpeechTextDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; VAR parameter2: Ptr; VAR parameter3: LONGINT; VAR parameter4: LONGINT; userRoutine: SpeechTextDoneUPP);
  248.     {$IFC NOT GENERATINGCFM}
  249.     INLINE $205F, $4E90;
  250.     {$ENDC}
  251.  
  252. PROCEDURE CallSpeechDoneProc(parameter0: SpeechChannel; parameter1: LONGINT; userRoutine: SpeechDoneUPP);
  253.     {$IFC NOT GENERATINGCFM}
  254.     INLINE $205F, $4E90;
  255.     {$ENDC}
  256.  
  257. PROCEDURE CallSpeechSyncProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSType; userRoutine: SpeechSyncUPP);
  258.     {$IFC NOT GENERATINGCFM}
  259.     INLINE $205F, $4E90;
  260.     {$ENDC}
  261.  
  262. PROCEDURE CallSpeechErrorProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: OSErr; parameter3: LONGINT; userRoutine: SpeechErrorUPP);
  263.     {$IFC NOT GENERATINGCFM}
  264.     INLINE $205F, $4E90;
  265.     {$ENDC}
  266.  
  267. PROCEDURE CallSpeechPhonemeProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: INTEGER; userRoutine: SpeechPhonemeUPP);
  268.     {$IFC NOT GENERATINGCFM}
  269.     INLINE $205F, $4E90;
  270.     {$ENDC}
  271.  
  272. PROCEDURE CallSpeechWordProc(parameter0: SpeechChannel; parameter1: LONGINT; parameter2: LONGINT; parameter3: INTEGER; userRoutine: SpeechWordUPP);
  273.     {$IFC NOT GENERATINGCFM}
  274.     INLINE $205F, $4E90;
  275.     {$ENDC}
  276.  
  277. FUNCTION SpeechManagerVersion: NumVersion;
  278.     {$IFC NOT GENERATINGCFM}
  279.     INLINE $203C, $0000, $000C, $A800;
  280.     {$ENDC}
  281. FUNCTION MakeVoiceSpec(creator: OSType; id: OSType; VAR voice: VoiceSpec): OSErr;
  282.     {$IFC NOT GENERATINGCFM}
  283.     INLINE $203C, $0604, $000C, $A800;
  284.     {$ENDC}
  285. FUNCTION CountVoices(VAR numVoices: INTEGER): OSErr;
  286.     {$IFC NOT GENERATINGCFM}
  287.     INLINE $203C, $0108, $000C, $A800;
  288.     {$ENDC}
  289. FUNCTION GetIndVoice(index: INTEGER; VAR voice: VoiceSpec): OSErr;
  290.     {$IFC NOT GENERATINGCFM}
  291.     INLINE $203C, $030C, $000C, $A800;
  292.     {$ENDC}
  293. FUNCTION GetVoiceDescription(VAR voice: VoiceSpec; VAR info: VoiceDescription; infoLength: LONGINT): OSErr;
  294.     {$IFC NOT GENERATINGCFM}
  295.     INLINE $203C, $0610, $000C, $A800;
  296.     {$ENDC}
  297. FUNCTION GetVoiceInfo(VAR voice: VoiceSpec; selector: OSType; voiceInfo: UNIV Ptr): OSErr;
  298.     {$IFC NOT GENERATINGCFM}
  299.     INLINE $203C, $0614, $000C, $A800;
  300.     {$ENDC}
  301. FUNCTION NewSpeechChannel(VAR voice: VoiceSpec; VAR chan: SpeechChannel): OSErr;
  302.     {$IFC NOT GENERATINGCFM}
  303.     INLINE $203C, $0418, $000C, $A800;
  304.     {$ENDC}
  305. FUNCTION DisposeSpeechChannel(chan: SpeechChannel): OSErr;
  306.     {$IFC NOT GENERATINGCFM}
  307.     INLINE $203C, $021C, $000C, $A800;
  308.     {$ENDC}
  309. FUNCTION SpeakString(s: StringPtr): OSErr;
  310.     {$IFC NOT GENERATINGCFM}
  311.     INLINE $203C, $0220, $000C, $A800;
  312.     {$ENDC}
  313. FUNCTION SpeakText(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT): OSErr;
  314.     {$IFC NOT GENERATINGCFM}
  315.     INLINE $203C, $0624, $000C, $A800;
  316.     {$ENDC}
  317. FUNCTION SpeakBuffer(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; controlFlags: LONGINT): OSErr;
  318.     {$IFC NOT GENERATINGCFM}
  319.     INLINE $203C, $0828, $000C, $A800;
  320.     {$ENDC}
  321. FUNCTION StopSpeech(chan: SpeechChannel): OSErr;
  322.     {$IFC NOT GENERATINGCFM}
  323.     INLINE $203C, $022C, $000C, $A800;
  324.     {$ENDC}
  325. FUNCTION StopSpeechAt(chan: SpeechChannel; whereToStop: LONGINT): OSErr;
  326.     {$IFC NOT GENERATINGCFM}
  327.     INLINE $203C, $0430, $000C, $A800;
  328.     {$ENDC}
  329. FUNCTION PauseSpeechAt(chan: SpeechChannel; whereToPause: LONGINT): OSErr;
  330.     {$IFC NOT GENERATINGCFM}
  331.     INLINE $203C, $0434, $000C, $A800;
  332.     {$ENDC}
  333. FUNCTION ContinueSpeech(chan: SpeechChannel): OSErr;
  334.     {$IFC NOT GENERATINGCFM}
  335.     INLINE $203C, $0238, $000C, $A800;
  336.     {$ENDC}
  337. FUNCTION SpeechBusy: INTEGER;
  338.     {$IFC NOT GENERATINGCFM}
  339.     INLINE $203C, $003C, $000C, $A800;
  340.     {$ENDC}
  341. FUNCTION SpeechBusySystemWide: INTEGER;
  342.     {$IFC NOT GENERATINGCFM}
  343.     INLINE $203C, $0040, $000C, $A800;
  344.     {$ENDC}
  345. FUNCTION SetSpeechRate(chan: SpeechChannel; rate: Fixed): OSErr;
  346.     {$IFC NOT GENERATINGCFM}
  347.     INLINE $203C, $0444, $000C, $A800;
  348.     {$ENDC}
  349. FUNCTION GetSpeechRate(chan: SpeechChannel; VAR rate: Fixed): OSErr;
  350.     {$IFC NOT GENERATINGCFM}
  351.     INLINE $203C, $0448, $000C, $A800;
  352.     {$ENDC}
  353. FUNCTION SetSpeechPitch(chan: SpeechChannel; pitch: Fixed): OSErr;
  354.     {$IFC NOT GENERATINGCFM}
  355.     INLINE $203C, $044C, $000C, $A800;
  356.     {$ENDC}
  357. FUNCTION GetSpeechPitch(chan: SpeechChannel; VAR pitch: Fixed): OSErr;
  358.     {$IFC NOT GENERATINGCFM}
  359.     INLINE $203C, $0450, $000C, $A800;
  360.     {$ENDC}
  361. FUNCTION SetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  362.     {$IFC NOT GENERATINGCFM}
  363.     INLINE $203C, $0654, $000C, $A800;
  364.     {$ENDC}
  365. FUNCTION GetSpeechInfo(chan: SpeechChannel; selector: OSType; speechInfo: UNIV Ptr): OSErr;
  366.     {$IFC NOT GENERATINGCFM}
  367.     INLINE $203C, $0658, $000C, $A800;
  368.     {$ENDC}
  369. FUNCTION TextToPhonemes(chan: SpeechChannel; textBuf: Ptr; textBytes: LONGINT; phonemeBuf: Handle; VAR phonemeBytes: LONGINT): OSErr;
  370.     {$IFC NOT GENERATINGCFM}
  371.     INLINE $203C, $0A5C, $000C, $A800;
  372.     {$ENDC}
  373. FUNCTION UseDictionary(chan: SpeechChannel; dictionary: Handle): OSErr;
  374.     {$IFC NOT GENERATINGCFM}
  375.     INLINE $203C, $0460, $000C, $A800;
  376.     {$ENDC}
  377.  
  378. {$ALIGN RESET}
  379. {$POP}
  380.  
  381. {$SETC UsingIncludes := SpeechIncludes}
  382.  
  383. {$ENDC} {__SPEECH__}
  384.  
  385. {$IFC NOT UsingIncludes}
  386.  END.
  387. {$ENDC}
  388.